package models.data;

import play.data.format.Formats;
import play.data.validation.Constraints;
import play.db.ebean.Model;

import javax.persistence.Entity;
import javax.persistence.Id;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: kristborga
 * Date: 22.3.2013
 * Time: 15:04
 * To change this template use File | Settings | File Templates.
 */
@Entity
public class verkefnaskil extends Model {
    @Id
    //@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "s_verkefnaskil")
    public Integer verkefnaskil_id;

    @Constraints.Required
    public Integer verkefninemenda_id;

    @Constraints.Required
    public String nemandi_id;


    @Formats.DateTime(pattern="yyyy-MM-dd")
    public Date dagsetningskilad;

    public File vidhengi;

    public String athugasemd;

    public verkefnaskil(Integer verkefninemenda_id, String nemandi_id, Date dagsetningskilad) {
        this.verkefnaskil_id = createId();
        this.verkefninemenda_id = verkefninemenda_id;
        this.nemandi_id = nemandi_id;
        this.dagsetningskilad = dagsetningskilad;
    }

    public verkefnaskil(Integer verkefninemenda_id, String nemandi_id, Date dagsetningskilad, String athugasemd) {
        this.verkefnaskil_id = createId();
        this.verkefninemenda_id = verkefninemenda_id;
        this.nemandi_id = nemandi_id;
        this.dagsetningskilad = dagsetningskilad;
        this.athugasemd = athugasemd;
    }

    public static verkefnaskil createWithoutAthugasemd(Integer verkefninemenda_id,String nemandi_id ){
        Date date = new Date();
        verkefnaskil verkefnaskil = new models.data.verkefnaskil(verkefninemenda_id,nemandi_id,date);
        verkefnaskil.save();
        return verkefnaskil;
    }
    public static verkefnaskil create(Integer verkefninemenda_id, String nemandi_id, String athugasemd){
        Date date = new Date();
        verkefnaskil verkefnaskil = new models.data.verkefnaskil(verkefninemenda_id,nemandi_id,date,athugasemd);
        verkefnaskil.save();
        return verkefnaskil;
    }

    public static Finder<Integer,verkefnaskil> find = new Finder<Integer,verkefnaskil>(
            Integer.class, verkefnaskil.class
    );

    public static boolean doesVerkefniNemendaExist(Integer verkefninemenda_id){
        boolean returnValue = false;
        if (verkefninemenda_id == null) {
            return false;
        }
        else {

            verkefnaskil vskil =  verkefnaskil.find.where().eq("verkefninemenda_id", verkefninemenda_id).findUnique();
            if(vskil ==null ){
                returnValue = false;
            }
            else{
                returnValue = true;
            }
        }
        return returnValue;
    }

    public static Integer createId(){
        List<Object> verkSkil = verkefnaskil.find.findIds();

        Integer max = 1;
        for(Object verk : verkSkil){
            if(Integer.valueOf(verk.toString()) > max) {
                max = Integer.valueOf(verk.toString());
            }
        }
        return (max+1);
    }

    public static List<verkefnaskil> findAllByverkNem(List<verkefninemenda> nemendur) {
        List<verkefnaskil> verkSkil = new ArrayList<verkefnaskil>();
        for(verkefninemenda verknem : nemendur){
            if(verkefnaskil.find.where().eq("verkefninemenda_id",verknem.verkefninemanda_id).findUnique() != null){
                verkSkil.add(verkefnaskil.find.where().eq("verkefninemenda_id",verknem.verkefninemanda_id).findUnique());
            }
        }
        return verkSkil;
    }
    public static int updateWithFile(Integer verkefninemenda_id,String nemandi_id, File vidhengi, String athugasemd){
        verkefnaskil selectedStudent = verkefnaskil.findByVerkefniNemandiID(nemandi_id, verkefninemenda_id);
        Date today = new Date();
        selectedStudent.dagsetningskilad = today;
        selectedStudent.vidhengi = vidhengi;
        selectedStudent.athugasemd = athugasemd;
        selectedStudent.save();
        return selectedStudent.verkefnaskil_id;
    }
    public static int updateWithoutFile(Integer verkefninemenda_id, String nemandi_id, String athugasemd){
        verkefnaskil selectedStudent = verkefnaskil.findByVerkefniNemandiID(nemandi_id, verkefninemenda_id);
        Date today = new Date();
        selectedStudent.dagsetningskilad = today;
        selectedStudent.athugasemd = athugasemd;
        selectedStudent.save();
        return selectedStudent.verkefnaskil_id;

    }

    public static int updateWithoutAthugasemdAndFile(Integer verkefninemenda_id, String nemandi_id){
        verkefnaskil selectedStudent = verkefnaskil.findByVerkefniNemandiID(nemandi_id, verkefninemenda_id);
        Date today = new Date();
        selectedStudent.dagsetningskilad = today;
        selectedStudent.save();
        return selectedStudent.verkefnaskil_id;

    }

    public static verkefnaskil findByVerkefniNemandiID(String nemandi_id, Integer verkefninemenda_id){
        return verkefnaskil.find.where().eq("nemandi_id", nemandi_id).where().eq("verkefninemenda_id", verkefninemenda_id).findUnique();
    }
    public static verkefnaskil findByVerkefniNemandaID(Integer verkefninemenda_id){
        return verkefnaskil.find.where().eq("verkefninemenda_id",verkefninemenda_id).findUnique();
    }

}
